<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Proxy代理</title>
</head>

<body>
  <script>
    /* 
      ES6引入代理（Proxy）
      是用来拦截对象的内置操作，注入自定义的逻辑，改变对象的默认行为。
      其实是一种元编程（metaprogramming）的能力，即把代码看成数据，对代码进行编程，改变代码的行为。

      构造函数Proxy()有两个参数
      target是要用代理封装的目标对象
      handler也是一个对象，它的方法被称为陷阱（trap），用于指定拦截后的行为
    */

    var obj = {}
    var handler = {
      set(target, propety, value, receiver) {
        target[propety] = "hello " + value
      }
    }
    var p = new Proxy(obj, handler)

    // p.name = "strick"
    console.log(p.name)
  </script>
</body>

</html>